import axios from "axios";
import config from './config';

const instance = axios.create({
  baseURL: config.baseUrl,
  // headers: config.headers,
  timeout: config.timeout,
  // withCredentials: config.withCredentials
})
// export default function $axios(options) {
//   return new Promise((resolve, reject) => {
    

    // request 拦截器
    instance.interceptors.request.use(
      config => {
        // let token = Cookies.get('token')
        // // 1. 请求开始的时候可以结合 vuex 开启全屏 loading 动画
        // // console.log(store.state.loading)
        // // console.log('准备发送请求...')
        // // 2. 带上token
        // if (token) {
        //   config.headers.token = token
        // } else {
        //   // 重定向到登录页面
        //   router.push('/login')
        // }
        // 3. 根据请求方法，序列化传来的参数，根据后端需求是否序列化
        if (config.method === 'post') {
          // if (config.data.__proto__ === FormData.prototype
          //   || config.url.endsWith('path')
          //   || config.url.endsWith('mark')
          //   || config.url.endsWith('patchs')
          // ) {

          // } else {
            // config.data = qs.stringify(config.data)
          // }
        }

        return config
      },

      error => {
        //   对请求错误做些什么
         console.log(error);
         return Promise.reject();
      }
    )
    instance.interceptors.response.use(
      response => {
        if (response.status === 200) {
          return Promise.resolve(response.data);
        } else {
            return Promise.reject(response);
        }
      },
      error => {
        if (
           400 <= error.response.status <500
        ) {
            alert("用户信息过期，请重新登陆");
            // 清除token
            // localStorage.removeItem("token");
            // 跳转登录
            setTimeout(() => {
            //   window.location.href = "/login";
            }, 1000);
        } else {
            if (error.response.status >= 500) {
                alert("服务器开小差了，请稍后再试！");
            } else {
                alert("服务器开小差了，请稍后再试！");
                return Promise.reject(error)
            }
        }
    }
    )
    // 请求处理
    // instance(options).then(res => {
    //   resolve(res)
    //   return false
    // }).catch(error => {
    //   reject(error)
    // })
//   })
// }
export default instance;